「この本が出る。筆者3冊目のTypeScript本。Visual C#のMVPなのになぜ?」
「知らないよ」
「まあ、これで打ち止めだ。他に書いているTS本は無いよ」
「まあまあ。問題はそこにはないよ。既に2冊も書いたTypeScript入門書をまた書いたのかい? それはくどくないかい?」
「それは違うのだ」
「何が違うの?」
「これはWeb上の大規模開発をやろうという主旨の本だ。TypeScriptの言語解説は含んでいるが、それは本の主旨からすれば本題ではないのだ」
「えーと。それじゃ本のタイトルが中身を裏切っているよ」
「それはいつものこと。本を書く際は、依頼されたタイトル、編集会議と通ったタイトルを最大限尊重して書くのだが、たいてい違うタイトルを編集部で付けられる。その結果、ほとんど必ずタイトルと中身の乖離が発生する。【なんだ違うじゃないか、嘘つき】という批判を浴びるリスクは常に存在するが、それに関わらずそういうタイトルは当たり前だ」
「それは何と言って良いか……」
「というわけで、この本は大規模開発がメインテーマだ」
「タイトルに小規模開発って書いてあるじゃないか。なんで小規模開発の話が無いんだよ」
「小さいプログラムはどう書いても動くからさ。別に説明することは何も無い……」
「じゃあ、タイトルが冗長じゃないか」
「それはしょうがない。出版するのは出版社で、出版社がこのタイトルでやりたいと言ったのだ」
「分かったよ。それで具体的に大規模開発って、コードサイズを拡大すると言う話?」
「実はそうじゃない。サーバ側にあったコードをクライアント側に極力持っていこうという主旨なのだ。単純に大きくする話ではない」
「何のために移動させるわけ?」
「そりゃ、サーバ側のCPUパワーには限りがあるからだ。サーバ側のCPU数は1個から増えていくが利用者の人数よりはずっと少ない。ゴールデンタイムでは応答が遅くなるサービスも当たり前だ」
「クライアントは?」
「利用者の人数分だけある。マルチコアのCPUや、1人で複数のマシンを使う利用者を考えれば、人数分以上だ。それらは、利用者がほとんど独占的に使うものなので、利用者が増えても彼らに無駄遣いされることはまずない」
「サーバ側のCPUをやめてクライアント側のCPUを使うだけで、使い勝手の改善が見込めるわけだね」
「それに、サーバを強化する必要性も低くなるので、コストも抑えられるぞ」
「分かった。だからクライアント側の処理を拡大することがテーマなのだね」
「そうそう」
「でもさ。なんで今ごろそんな本を書くわけ?」
「実は、JavaScriptはコードサイズを拡大するのが難しい。ちょっとした書き間違い1つで整合性が崩れるが、どこで間違えたのか分かりにくいことが多いからだ。TypeScriptの出現で、そのあたりの問題が改善できる目処が付いたので、現実的になった」
「なぜ他の言語ではなくTypeScriptなの?」
「良い質問だ。TypeScriptというのは、JavaScriptのスーパーセットであり、未来のJavaScriptのドラフトの先取りも多く含む。そういう意味で、JavaScriptとは別言語というよりも親戚言語なのだ。それは覚えることが少なくて済むことを意味する。そして、ここが重要。デバッグ時には、Webブラウザにビルドインされたデバッグ機能を使用せざるを得ないこともあるが、そういうときにはコンパイル結果を見なければならない。ソースとコンパイル結果がかなり似ているTypeScriptは、せいぜいクラスやモジュールが関数に置き換わる程度で簡単に読めちゃうので、デバッグしやすい。ここ重要」
「なんで重要なの?」
「実際の開発ではそこが最大のポイントだからだ。コーディングのしやすさなんてものは、実は二次的な問題に過ぎない」
「なるほど」
「それに、サーバ側でもJavaScript使ってる人を除いて、既にサーバ側とクライアント側で2言語要求されているんだ。もう1つ追加で新しい言語を……と言われたら【ふざけんな】って感じだろう。本来ならJavaScript+αのTypeScriptですら怪しい水準だが、ここまでは我慢すればぎりぎりセーフ」
「それ以上かけ離れたものは受け入れられないわけだね」
「そうそう。実際にはTypeScriptですらアウトという人達もいる。ろくでもないJavaScriptを苦労して乗りこなした人達だね。彼らは既にJavaScriptを使うためのノウハウを確立しているから、今更TypeScriptなんて要らないと思っているが、それは逆にいえば膨大な経験の蓄積があって言えること。やりたくないけど仕方なく時々JavaScript書いてるレベルの人達には太刀打ちできない世界」
「じゃあTypeScriptは限定されたユーザー向け?」
「いや、実は多数派なんだよ。JavaScriptを完全に使いこなしている人達は、かなりの少数派」
「えー」
「とりあえずまとめようか」
「まとめてくれ」
- TypeScriptにはライバル技術がほぼ存在しない。自称ライバルは限定された局面での優秀性を主張しているだけで、全体として見ると上手く機能しない可能性が高い
- TypeScriptを使うと生産性は向上する
- TypeScriptを使うと大規模コードを書く際のハードルは下がる
- TypeScriptなどなくてもJavaScriptで十分という人達は確かに存在するが、多数派というわけでもない
「これでも項目数が多いな。一言で要約してくれよ」
「大規模開発でも小規模開発でも使えるTypeScript 実践入門、興味があったら買ってね」
「それが要約かい」